/*
 * $Id: api.h,v 1.4 2006-02-22 04:51:51 bacon Exp $
 */

#ifndef _XP_SYS_API_H_
#define _XP_SYS_API_H_

#include <xp/types.h>
#include <xp/macros.h>
#include <xp/bas/time.h>

typedef struct xp_meminfo_t xp_meminfo_t;

struct xp_meminfo_t
{
        xp_ulong_t totalram;
        xp_ulong_t availram;
        xp_ulong_t freeram;
        xp_ulong_t totalswap;
        xp_ulong_t availswap;
        xp_ulong_t freeswap;
};

enum
{
	XP_HALT_POWEROFF,
	XP_HALT_RESTART,
	XP_HALT_SHUTDOWN
};

enum
{
	XP_HALT_FORCE = (1 << 0),
	XP_HALT_TIMED = (1 << 1)
};

#ifdef __cplusplus
extern "C" {
#endif

/*
 * int xp_halt (int cmd, int opt);
 *
 * [opt & XP_HALT_TIMED]
 * int xp_halt (int cmd, int opt, xp_time_t tmout, const xp_char_t* msg); 
 */
int xp_halt (int cmd, int opt, ...);

int xp_getncpus (xp_size_t* ncpus);
int xp_getmeminfo (xp_meminfo_t* meminfo);
int xp_getuptime (xp_time_t* uptime);

#ifdef __cplusplus
}
#endif

#endif
